import com.lefu.utils.common.exception.LefuException;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 文件处理类
 * Created by lrs on 2018/2/23.
 */
public class FileHelp {

    /**
     * 创建目录，有则不创建没有则创建
     * @param dirName
     */
    public void createDir(String dirName) {
        if  (!dirExists(dirName)) {
            File file = new File(dirName);
            file .mkdir();
        }
    }

    /**
     * 检查文件是否存在
     * @param name
     * @return true 存在, false 不存在
     */
    public boolean fileExists(String name) {
        File file = new File(name);
        if  (file.exists() && file.isFile()) {
            return true;
        }
        return false;
    }

    /**
     * 检查目录是否存在
     * @param name
     * @return true 存在, false 不存在
     */
    public boolean dirExists(String name) {
        File file = new File(name);
        if  (file.exists() && file.isDirectory()) {
            return true;
        }
        return false;
    }

    /**
     * 根据目录名返回所有文件名
     * @param dirName 目录名
     * @param namePrefix
     * @return
     */
    public List<String> getAllFile(String dirName, String namePrefix) {
        List<String> list = new ArrayList<String>();

        File baseFile = new File(dirName);
        if (baseFile.isFile() || !baseFile.exists()) {
            return list;
        }
        File[] files = baseFile.listFiles();
        for (File file : files) {
            if (file.isDirectory()) {
                list.addAll(getAllFile(file.getAbsolutePath(), namePrefix));
            } else {
                if (file.getAbsolutePath().indexOf(namePrefix) != -1) {
                    list.add(file.getAbsolutePath());
                }
            }
        }
        return list;
    }

    /**
     * 将字符串写入指定文件中
     * @param fileName 文件名
     * @param content 字符串
     * @throws IOException
     */
    public void writeFile(String fileName, String content) throws IOException {
        File writename = new File(fileName); // 相对路径，如果没有则要建立一个新的output。txt文件
        writename.createNewFile(); // 创建新文件
        BufferedWriter out = new BufferedWriter(new FileWriter(writename));
        out.write(content); // \r\n即为换行
        out.flush(); // 把缓存区内容压入文件
        out.close(); // 最后记得关闭文件
    }

    /**
     * 读出指定文件内容
     * @param fileName
     * @throws IOException
     */
    public String readFile(String fileName) throws IOException, LefuException {
        StringBuffer sb = new StringBuffer();

        File myFile=new File(fileName);
        if(!myFile.exists()) {
            throw new LefuException("产品详情文件未找到：" + fileName);
        }

        BufferedReader in = new BufferedReader(new FileReader(myFile));
        String str;
        while ((str = in.readLine()) != null) {
            sb.append(str);
        }
        in.close();

        return sb.toString();
    }

}
